package cn.itcast.service.system.impl;

import cn.itcast.dao.module.ModuleDao;
import cn.itcast.dao.user.UserDao;
import cn.itcast.domain.module.Module;
import cn.itcast.domain.user.User;
import cn.itcast.service.system.UserService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class UserServiceImpl implements UserService{

    @Autowired
    private UserDao userDao;
    @Autowired
    private ModuleDao moduleDao;

    //分页查询所有
    @Override
    public PageInfo findAll(int pageNum, int pageSize, String companyId) {
        PageHelper.startPage(pageNum, pageSize, companyId);
        List<User> list = userDao.findAll(companyId);
        PageInfo pageInfo = new PageInfo(list);
        return pageInfo;
    }

    @Override
    public User findById(String id) {
        return userDao.findById(id);
    }

    @Override
    public void save(User user) {
    userDao.save(user);
    }

    @Override
    public void update(User user) {
    userDao.update(user);
    }

    @Override
    public void delete(String id) {
    userDao.delete(id);
    }

    @Override
    public User findByEmail(String email) {

        return userDao.findByEmail(email);
    }

    public List<Module> findMenus(User user) {

        //0 根据的等级字段degree来区分不同的用户
        if (user.getDegree()==0) {
            //degree=0 为saas管理员，（去菜单表中根据belong=0获取到属于saas管理员应该操作菜单的权限信息）
            return moduleDao.findUserModule(0);
        } else if (user.getDegree() == 1) {
            //degree=1 为企业管理员，（去菜单表中根据belong=1获取到属于企业管理员应该操作菜单的权限信息）
            return moduleDao.findUserModule(1);
        } else {
            //企业的普通员工，   rbac涉及到的5张表
            return moduleDao.findUserModuleToRBAC(user.getId());
        }

    }

    @Override
    public User findByUnionid(String unionid) {
        return userDao.findByUnionid(unionid);
    }

    @Override
    public User findUserDegree(String companyName, int i) {
        return userDao.findUserDegree(companyName,i);
    }
}
